﻿/***********************************************************************
 * <copyright file="ISite.cs" company="B/S JSC">
 * -->    Copyright (C) statement. All right reserved
 * </copyright>
 * 
 * Created:   Hoang Bich Son 
 * Email:    sonhb@newman.vn
 * Website:
 * Create Date: Thursday, March 13, 2014
 * Usage: 
 * 
 * RevisionHistory: 
 * Date         Author               Description 
 * 
 * ************************************************************************/
using System.Collections.Generic;
using BusinessSecurity;

namespace DataSecurity.StandartInterfaces
{
    /// <summary>
    /// ISite
    /// </summary>
    public interface ISite
    {
        /// <summary>
        /// Gets the specified identifier.
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <returns></returns>
        Site Get(int id);

        /// <summary>
        /// Gets the list.
        /// </summary>
        /// <returns></returns>
        List<Site> GetList();

        /// <summary>
        /// Gets the list.
        /// </summary>
        /// <param name="userId">The user identifier.</param>
        /// <param name="parentId">The parent identifier.</param>
        /// <returns></returns>
        List<Site> GetList(int userId, int parentId);

        /// <summary>
        /// Gets the list.
        /// </summary>
        /// <param name="parentId">The parent identifier.</param>
        /// <returns></returns>
        List<Site> GetListByParentId(int parentId);

        /// <summary>
        /// Gets the paged.
        /// </summary>
        /// <param name="currentPage">The current page.</param>
        /// <param name="totalPage">The total page.</param>
        /// <returns></returns>
        List<Site> GetPaged(int currentPage, ref int totalPage);

        /// <summary>
        /// Gets the advanced.
        /// </summary>
        /// <param name="keyword">The keyword.</param>
        /// <param name="status">The status.</param>
        /// <param name="sort">The sort.</param>
        /// <param name="order">The order.</param>
        /// <param name="currentPage">The current page.</param>
        /// <param name="totalPage">The total page.</param>
        /// <returns></returns>
        List<Site> GetAdvanced(string keyword, bool? status, string sort, string order, int currentPage, ref int totalPage);

        /// <summary>
        /// Inserts the specified permission.
        /// </summary>
        /// <param name="site">The site.</param>
        /// <returns></returns>
        object Insert(Site site);

        /// <summary>
        /// Updates the specified permission.
        /// </summary>
        /// <param name="site">The site.</param>
        /// <returns></returns>
        object Update(Site site);

        /// <summary>
        /// Deletes the specified permission.
        /// </summary>
        /// <param name="idList">The identifier list.</param>
        /// <returns></returns>
        object Delete(string idList);
    }
}
